Backport of Allow multiple endpoints in Envoy clusters configured with hostnames into release/1.20.x #21882
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Backport
This PR is auto-generated from #21655 to be assessed for backporting due to the inclusion of the label backport/1.20.
The below text is copied from the body of the original PR.
Description
Currently when Consul generates configuration for Envoy, it behaves the same for both
LOGICAL_DNS
andSTRICT_DNS
discovery types and provides only a single endpoint to Envoy in both modes. This means that when multiple hostnames are configured inSTRICT_DNS
mode, requests are not load balanced over all available hosts.This change configures Envoy with all available hostnames when the discovery type is set to
STRICT_DNS
. InLOGICAL_DNS
mode, Envoy supports only a single endpoint and so the current behaviour of Consul remains unchanged.Testing & Reproduction steps
Tested manually, as follows:
Create Consul cluster
Create 2 instances of the same service ("example-service"), with different hostnames.
Create terminating gateway, configured with "example-service" as a destination.
Fetch the Envoy config from the terminating gateway and observe that only a single hostname is present in
lb_endpoints
(since the default discovery type isLOGICAL_DNS
).Set
envoy_dns_discovery_type
to"STRICT_DNS"
in proxy-defaults.Refetch config and observe that the Envoy config now contains both hostnames in
lb_endpoints
and will load balance incoming requests across all configured endpoints.Links
PR Checklist
Overview of commits